////////////////////////////////////////////////////////////////////////////////
//
// B L I N K
//
// Copyright (C) 2016-2019 Blink Mobile Shell Project
//
// This file is part of Blink.
//
// Blink is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Blink is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Blink. If not, see <http://www.gnu.org/licenses/>.
//
// In addition, Blink is also subject to certain additional terms under
// GNU GPL version 3 section 7.
//
// You should have received a copy of these additional terms immediately
// following the terms and conditions of the GNU General Public License
// which accompanied the Blink Source Code. If not, see
// <http://www.github.com/blinksh/blink>.
//
////////////////////////////////////////////////////////////////////////////////

import Foundation
import SwiftUI

struct CheckmarkRow: View {
  let text: String
  let checked: Bool
  let failed: Bool
  
  let failedIcon: String
  let checkedIcon: String
  let uncheckedIcon: String
  
  let iconColor: Color
  let iconFailedColor: Color
  
  init(
    text: String,
    checked: Bool = true,
    failed: Bool = false,
    failedIcon: String = "exclamationmark.circle",
    checkedIcon: String = "checkmark.circle.fill",
    uncheckedIcon: String = "circle",
    iconColor: Color = .green,
    iconFailedColor: Color = .orange
  ) {
    self.text = text
    self.checked = checked
    self.failed = failed
    self.uncheckedIcon = uncheckedIcon
    self.checkedIcon = checkedIcon
    self.failedIcon = failedIcon
    self.iconColor = iconColor
    self.iconFailedColor = iconFailedColor
  }
  
  var body: some View {
    HStack(alignment: .firstTextBaseline) {
      Image(systemName: failed ? failedIcon : checked ? checkedIcon : uncheckedIcon)
        .foregroundColor(failed ? iconFailedColor : iconColor)
        .frame(maxWidth: 26)
      Text(text).fixedSize(horizontal: false, vertical: true)
      Spacer()
    }
  }
}
